package com.itheima.health.dao;

import com.github.pagehelper.Page;
import com.itheima.health.entity.QueryPageBean;
import com.itheima.health.pojo.Role;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @Author likepei
 * @Date 2020/2/19 10:48
 * @Version v1.0
 * @Description 角色持久层接口
 */
public interface RoleDao {
    /**
     * 基于用户id 查询关联的角色集合
     * @param id
     * @return
     */
    Set<Role> findByUserId(@Param("id") Integer id);

    /**
     * 分页查询
     * @param queryString 查询条件
     * @return 检查组对象的集合数据
     */

    Page<Role> selectByCondition(@Param("queryString") String queryString);
    //增加角色
    void add(Role role);
    //增加权限和角色
    void addPermissionAndRole(Map<String,Integer> map);
    //增加菜单和角色
    void addMenuAndRole(Map<String,Integer> map);

    //通过角色ID查找角色
    Role findById(@Param("id") Integer id);

    //通过角色ID查找权限ID
    List<Integer> findPermissionIdsByRoleId(@Param("id") Integer id);

    //通过角色ID查找菜单ID
    List<Integer> findMenuIdsByRoleId(@Param("id") Integer id);

    /**
     * 查询所有角色
     * @return
     */
    List<Role> findAll();

    //通过角色ID删除权限
    void deletePermissionByRoleId(@Param("id") Integer id);

    //通过角色ID删除菜单
    void deleteMenuByRoleId(@Param("id") Integer id);

    //通过ID删除角色
    void deleteById(@Param("id") Integer id);

    //查询角色ID对应的权限ID个数
    Long countPermissionIdsByRoleId(@Param("id")Integer id);

    //查询角色ID对应的菜单ID个数
    Long countMenuIdsByRoleId(@Param("id")Integer id);
}
